.IX Title "lilybbs-linux入门以及精华区导读"
.TH "lilybbs faq" 7 "2004-05-01" "lilybbs-linux入门以及精华区导读"
.SH NAME
lilybbs-faq \- linux入门以及百合 Linux 版精华区导读
.SH "QUESTIONS 问题与解答"
.SS "不需要任何命令的简单介绍"
.TP
历史
.
(APUE 提到了1990年之前的unix历史，还有各种标准 ANSI ISO IEEE posix xpg3....
但是linux 和 BSD 尤其是freebsd 在其后才大行其道)
unix 的历史与 c 是紧密相关的，无论是产生发展还是后来的标准制定。
标准的制定反映出的，是当时的竞争之激烈。竞争在标准制定之后得到了抑制，
但是这段纷争的时间却使unix的发展减缓了
另一个阻碍发展的因素是版权，BSD的发展被延迟了，linux在版权上的障碍才刚刚开始
.
历史问题可以参阅精华区的“历史”目录
.TP
版权模式
.
自由软件版权和开源软件版权的区别，在于对衍生工作的限制。
GPL 的限制指出，你可以修改GPL软件，但是如果要再发行修改过的版本，
就必须允许其他任何人对这个版本进行再次修改。根据这一条，很多讨论都是
没有必要的。如果你的修改不会再发行，那么就不必考虑是否公布修改的细节。
也就是说，政府/军队的保密限制和GPL是不会冲突的。
FDL 的限制似乎仅仅需要保留声明
这种保证用户权力的做法是否有道理，还是不清楚
开源软件版权，例如BSD和类似的X版权，要求在任何衍生工作中保留原作者的信息
对再次发行修改后的版本没有限制
不明白为什么要这样做－－其中有一种自信，“舍我其谁”的勇气吧
参阅精华区“历史文化”目录
.TP
合作开发模式
.
有很多工具用于实现合作开发
参阅精华区“软件开发”目录
.TP
linux最吸引人的地方是什么？
.
很多人想知道linux为什么那么好，为什么让人着迷
我想我喜欢它，因为它的历史悠久，结构很清楚很漂亮，很多思想很巧妙
也许仅仅是“历史”就足够了。怀古的人不在少数吧
合作开发，集中大家的智慧，从中可以产生无限的可能
自由？共产主义的狂热精神？天下大同？
当然，最直接的就是可以牢牢地将计算机控制在自己手里，想把它修饰成
什么样子就做成什么样子，可以想出和别人完全不同的生活方式，比如
iloveqhq的scheme生活环境，是一般人享受不到的
各种新鲜的想法，随时可以试验一下－－让想法时时刺激头脑
象一个游戏，耗时，费力，需要经常上论坛找攻略，从来没有一定的玩法
.TP
FUD 是什么意思？
.
2003年末，伴随SCO对各个有关linux的公司的指控，还有对用户的威胁恐吓，
各种媒体也纷纷兴风作浪，发表耸人听闻的新闻，例如新浪的一些报道。
FUD 不仅指这些不负责任的话，还包括对linux等自由软件/开源软件的怀疑，
对自身的怀疑我自己认为过分的狂热也可以叫做FUD。
总之，没有平和的态度就没办法实实在在地作事情，所以技术问题之外，
争论还是少一点好，怀疑更要少一点
其实所有初学者都会情不自禁地自称“菜鸟”，会“问弱弱的问题”。问题在于，
有没有抓紧时间提高水平
.TP
目录 文件 路径概念
.
APUE 中开始就讲目录 文件 路径的概念，因为这几个概念太基础了。自从
“文件”出现之后，又出现了层次目录结构，对计算机中资源的管理才逐步
发展起来。文件很适合于描述计算机上的资源
unix的目录结构是非常严谨的树形结构，根目录是“/”，其他目录和文件都必须
在这个目录下面。每个目录下面都可以有子目录和文件，目录和文件名称的长度
是与文件系统有关的
路径是引用一个目录或文件时用到的，指示它的位置的字符串。绝对路径是说
从根目录“/”开始，沿着目录树找到需要引用的目录或文件，然后将中间经历的
节点都写出来。例如，“/root/abc” 是说要找到“abc” 文件，就必须从
“/”开始，中间经历 “root” 目录才能找到。
当前目录是说用户正处于树形目录的哪个节点上，相对路径就是要引用的目录
或文件相对于当前目录的位置。例如，我现在在“/root” 目录当中，要引用
“/root/def/xyz” 的话，只要用 “def/xyz” 就可以了
.TP
文件类型
.
文件有不同的类型，在windows里就可以看到，有文本文件，图像，声音，视频
但是在linux中的文件类型要更多。例如，符号链接就是非常有用的类型
另外，linux中的二进制可执行文件是ELF格式的，不需要扩展名；而windows中
是PE格式，有固定的扩展名。所以，两个系统的应用程序不能换用，有朝一日也许可以
linux中很重要的一种文件就是设备文件。几乎所有的设备都有一个对应的文件，
在“/dev”当中
例如，硬盘harddisk简称hd，那么系统中的第一个硬盘就是hda，第二个就是hdb.....，
然后对应的设备文件就是“/dev/hda”。硬盘上的各个分区用数字来编号，例如
第一个硬盘的第一个分区就是“/dev/hda1”，第二个分区就是“/dev/hda2”
再举一个例子，显卡的设备文件“/dev/fb0”，鼠标设备文件“/dev/input/mice”
和“/dev/psaux”
要注意的是，linux中的可执行文件可以是二进制的，也可以是文本文件。
“可执行”仅仅是文件的一个属性而已，不像windows中由于文件系统中能保存的
属性信息少，只能通过扩展名来识别文件类型。linux中的文件可以不用扩展名，
也可以用任意的扩展名各种各样的文件类型，是为了将不同的对象进行统一的处理。
我们可以用open lseek read write close 来读写一个文本文件，也可以用这几个
函数来处理鼠标，让声卡播放一段声音，读写一块硬盘（如果你敢的话）。
在windows中，不同的设备处理的方法是不同的，而unix环境中的处理方法是
整齐划一的。控制方法一般是fcntl和ioctl。（谁能告诉我ioctl犯了什么错误了？）
.TP
硬盘分区方式
.
硬盘有很多种，分区也有各种各样的方法。linux支持它们，但是常用的分区方法
就只有一种了。这种分区方法的要求是这样，一块硬盘上只能有最多四个主分区，
最多一个扩展分区；在扩展分区中可以划分无限多的逻辑分区。记住这三个概念。
每个分区的第一个扇区一般都是保留分区信息的，数据一般从第二个扇区开始。
分区信息中很重要的内容是“下一个分区的位置在什么地方”还有“本分区的
大小是多少”。因此，linux对分区进行编号的顺序并不是硬盘上分区的物理排列顺序，
而是从第一个分区开始，不断查找下一个分区。这样的结果是编号很容易弄错。
要处理分区时，一定要把当前分区情况备份一下
pqmagic分区软件不如linux中的分区软件好用，因为它对混乱的分区编号处理
更容易出错
.
启动引导程序一般都装到某个分区的第一个扇区里面，和分区信息放到一起。
但是，如果安装启动引导程序时指定的设备错了，那么可能会把数据破坏掉，
或者将其他分区的引导程序破坏掉。典型的情况是这样：windows将自己的引导程序
放在第一个分区－－主分区1的开头，我们的linux fans想把linux的引导程序，
lilo或者grub放到整个硬盘的开头－－MBR里面。MBR的设备名是 “/dev/hda”，
但是主分区1的设备名是 “/dev/hda1”。一个不小心，系统就启动不了，坏掉了
.TP
国际化，locale的概念，utf8 等字符编码的含义和用法
.
后两个已经不用再多说了。是很过时的话题。但是前日还有人问turbolinux是不是内核汉
化的。用户并不是直接和内核打交道，为什么要汉化内核呢？目前的内核包含各种编码，
用于文件名的转换，但是并没有包含字体，因为用户不是直接和内核打交道！
国际化是整个系统范围内的，对编码进行规范，对输入输出方式的函数接口和通信协议进
行整体的设计，提供处理各种语言环境的统一方法。本地化中，对编码的规定和对日期时
间、货币格式的规定是国家标准，而输入法、字体还有应用程序界面的翻译，还需要大家
共同努力。
国际化和本地化都应当在应用程序中实现，例如zhcon和cce。窗口系统中的国际化和本地
化也是由应用程序实现的，窗口系统本身只提供通信协议
zhcon还不是很完善，支持的编码太少了
.TP
中文化是本地化的一种，终端的本地化不是很完整
.
对世界上所有的字符进行编码，就是unicode。但是，具体的实现方法有很多种，有的采用
定长编码，有的采用变长编码。utf8编码是变长的，能实现unicode的大部分要求
zh_CN.UTF-8，zh_CN.GB18030 这些locale 的定义，前一部分是国家代码，语言代码，后
一部分是编码。不同的国家代码和语言代码对应着不同的输入法，日期时间货币格式等等
，对用户比较重要，编码则不是很重要，不同的语言可以使用相同的编码，推荐使用utf8
.TP
模块化的设计思想 界面无关 设备无关
.
这一段还没有想好
很多程序是和界面没有关系的。例如，字体的使用一般使用Xft2字体库，但是它和窗口环
境没有必然联系。大部分bt工具是和界面没有关系的。图形应用程序
我们使用计算机时，我们的一举一动都是在和系统通信。系统中程序执行时也在互相通信
。想要打开输入法，我们按下ctrl-space，这时候输入法和应用程序之间就通过XIM协议开
始通信了－－过些日子，也许就不是这种协议了，但是通信是一定存在的
一方面，每个程序都关心自己的功能，另一方面，每个程序都要和其他程序进行通信。
.TP
进程的概念 线程
.
APUE 中提到，进程是一个程序的运行中的实例。进程有很多属性，比如编号，所有者，当
前运行状态，启动时的命令行，环境变量，运行时间，打开了什么文件....
线程和进程类似，也有很多属性。同一个进程的不同线程可以很容易地互相访问数据。so
laris的线程实现很不错，非常灵活
.TP
什么发行版好？什么unix好？
.
精华区目录中有各种unix的对比，linux的使用感受，可以看一看
还有对书和网站的推荐
debian 发展太慢了，除非用unstable 版本，但是那又太快了。用 knoppix 上上手不错
redhat 一直很好用，但是升级时最好重装系统。现在fedora的网络升级不知道能不能完全
升级？
redhat对中文的支持也很好，但是需要手动安装的软件比较多
turbolinux magic 还有国内厂商的版本 对中文支持不错
个人不喜欢mandrake，很难定制。slackware 需要自己处理的东西太多了
freebsd 的使用和debian 很相似，自动化程度很高
.SS "需要综合使用命令才可以完成的操作"
.TP
文件权限
.
文件权限并不是文件类型。所谓“可执行”，仅仅是文件的权限而不是类型。
传统的文件权限是九个字符rwxrwxrwx三个一组一共三组，再加上文件所有者和组。高级的
文件权限就不是这么简单了，类似ntfs，可以指定任何用户/组对某个文件的各种各样的权
限用 “ls -l” 命令可以看到当前目录中所有目录和文件的权限
用 “chmod” “chown” 和 “chgrp” 命令可以修改权限
.TP
运行程序 来自bash手册页
.
假如看到文件的权限中带有x，那么它是一个可执行的程序。要执行它，可以使用相对路径
，也可以使用绝对路径。例如，我的目录中有一个“run-me” 文件是可执行的，那么我可
以运行 “/root/bin/run-me” ，或者先运行 “cd /root” 再运行 “bin/run-me”。
假如说这个可执行文件的位置在 “/usr/bin” 当中，那么我不必使用路径也可以直接执
行它，因为环境变量 “PATH” 中包含了 “/usr/bin”。运行 “export” 可以看到 “
PATH” 的定义
.TP
具体目录的作用 来自FHS 标准
.
这个标准不是很正式，但是很多unix系统都在用。意思就是，“/” 根目录下面的子目录
和文件都有它们各自的用处，不能随意增加删除。比如说，“/dev” 就是设备，“/etc”
 就是所有配置文件，“/var” 是应用程序自动管理的数据，比如用rpm安装了一个软件，
rpm会将那个软件的信息存在“/var” 当中。“/usr” 当然就是应用程序的目录。“/bo
ot” 是内核还有启动时要用到的文件。试一试，“ls lR /” :)
.TP
安装和删除软件－－最简单的办法
.
最简单的，把这个软件包含的文件－－一般是一个可执行文件，复制到 “/usr” 当中就
可以了。复制到什么地方呢？FHS 对 “/usr” 目录中的子目录也有规定。“/usr/bin”
 是可执行文件，“/usr/lib” 是库文件，就是xxxxxx.so.1 之类的，“/usr/share” 是
不需要修改的数据，比如帮助手册，桌面图标等等。
要卸载软件，只要从“/usr” 当中把复制过去的文件删掉就可以了
复制用 cp 命令，删除用 rm 命令。小心不要误删除了有用的东西
和windows里面不太一样，不会在一个系统中安装四个或者五个QQ却仍然找不到QQ装在什么
地方。一般安装软件要用make，rpm 或者dpkg 等等方法，不用自己操心复制删除文件
.TP
进程间的关系，应当使用APUE 中的叙述
.
用ps 命令可以查看进程。用top命令可以动态地查看进程。当然，要搞清楚输出是什么意
思，需要仔细看看帮助
fg 和 bg 可以在一些进程中切换
kill 和killall 可以控制进程停止和退出
一边执行命令，一边可以到“/proc” 目录看一看。这个目录是整个系统的情况，包括硬
件和软件的信息。多练一练 “cd”，“ls” 还有 “cat”。看了足够多之后，对于ps 和
top 命令的输出就大概明白了。我认为“/proc” 是新手训练的最佳场合
.TP
fork exec 环境变量 守护进程(daemon)
.
.TP
shell 编程初步-shell,awk,perl
.
.TP
命令
.
cd ls ；cat less ；rm cp mv ln ；mkdir chmod chgrp ；
reboot poweroff ；mount umount df du ；tar make ；
fdisk parted ；vi ；man info ；
rpm apt-get apt-cache dpkg ；lilo grub modprobe ；
gcc g++ ；ps fg bg top ；
最常用的命令是不是poweroff 和 reboot ？
.TP
命令的通用选项
.
cd -
切换到上次所在的目录
cd ..
切换到上层目录
ls -lh
很多命令的参数中，“-h” 表示的是将文件大小转换为以 “MB” 和 “kB” 为单位
“-l” 是长格式，可以看到文件更多的信息
df -h
du -h
查看磁盘空间，已用多少，剩余多少
free
查看内存和交换空间使用情况。不过一般用top来看更好一些
less -isr
可以用这个命令来看看很多类型的文件的内容，包括文本文件，压缩包等等。加上参数就
能处理中文了
rm -rf
强制删除，包括目录和文件
cp -a
完全复制，保留原来文件的所有属性
cp -R
复制，包括目录和文件。默认不包括目录
ln -s
建立符号链接。符号链接的目标可以是目录或文件，也可以不存在。产生的新文件和链接
目标属性和作用完全一致。
tar zxf
tar zcf
tar jxf
tar jcf
创建压缩文件（c）和解压缩（x）
j 对应的是 .tar.bz2，而 z 对应的是 .tar.gz
fdisk -l
列出一个硬盘的分区情况。fdisk 命令交互执行更有意思
rpm -ivh
rpm -Uvh
安装一个软件包 或者升级一个软件包
rpm -qip
rpm -qpl
查询一个软件包的信息和内容
rpm -qf
查询一个文件属于哪个软件包
apt-get update
升级整个系统，但是不会强制升级一些不合规范的内容
apt-get install
安装一个软件。debian最吸引人的地方就在于容易地安装和删除软件
dpkg -i
dpkg -l
apt-cache search
如果软件名称更容易记就好了
.SS "实习"
.TP
安装X输入法
.
X 输入法一般需要两个环境变量，一个是 XMODIFIERS, 另外一个是 LC_CTYPE
比如要使用fcitx 输入法，XMODIFIERS 最好是 “@im=fcitx” （也可以是其他值），LC
_CTYPE 是一个locale 类型的变量，其中的国家代码必须是zh，语言代码和编码倒是无所
谓再比如要使用scim 输入法，XMODIFIERS 应当是 “@im=scim” , LC_CTYPE 在输入
中文时同上，输入其他文字时可以是其他国家代码。
当然，如果你的系统中连中文字体都没有，就不要指望有中文输入法了。
因为不同的进程有自己独特的环境变量设置，所以完全可以在同一个窗口系统的不同应用
程序中使用各种输入法，只要在启动应用程序之前先设置 XMODIFIERS 就可以了。
安装X输入法最困难的是如何使输入法可以随着X窗口系统而启动和退出。不同的发行版有
不同的运行输入法的方法，比如redhat/fedora 可以修改 “/etc/X11/xinit/xinit.d/xi
nput” 文件
.TP
安装终端的中文环境
.
.TP
遍历 /proc 目录
.
.TP
安装软件 查询软件包
.
.TP
配置文件，fstab lilo.conf grub.conf XF86Config
.
.TP
配置lilo 或者 grub, 问题修复
.
建议找一个好一点的lilo.conf 或者 grub.conf 看一看，至少是能用的配置文件看一看，
然后再着手进行修复工作。有可能需要手动从头开始写一个配置文件
确定真的弄清楚了硬盘分区情况了吗？在BBS上求助时，一定要把分区情况和配置文件，还

有导致出错的步骤都贴上来
精华区lilo 和grub 目录都各有上百篇帖子，讲述安装和修复的过程
.TP
mount
.
mount 命令用于将一个设备挂载到一个目录上，然后就可以访问其中的文件了。
mount 命令可选的参数非常多，但是要想正确挂载一个设备，必须搞清楚一些事情
例如：
	mount /dev/sda1 /mnt/u-disk/sda1 -t vfat -o defaults,users
其中，USB移动硬盘设备对应的设备文件名是 “/dev/sda1”。如果设备文件名
搞错了，那么挂载肯定会出错。很多出错都是因为 “/dev/sda1” 对应的设备
根本不存在
-o 可以指定的选项非常多，不同的文件系统都有自己特定的选项。常用的就是
users iocharset fmask dmask rw/ro 这一些。iocharset 是自己的编码，在挂载
windows 网上邻居的目录时，iocodepage 是对方的编码。
看帮助，man mount 非常长。常见的/etc/fstab中的一行是这样：
      /dev/hda1    /mnt/harddisk/C vfat defaults,users,umask=0 0 0
如果是kernel-2.6 那么还可以加上fmask=111,dmask=0 来控制权限
.TP
安装X字体
.
非常简单。字体有两个系统，一个是旧一点的X系统，一个是新一点的Xft2系统。要想在两
个系统中同时使用某个字体，需要将这个字体复制到某个“/usr/local/share/fonts” 的
子目录中去，然后在 “/etc/X11/fs/config” 中加入这个目录，最后执行 “fc-cache 
-fv” 刷新字体列表，“service xfs restart” 就可以了
不同的系统中，完成这几个步骤的具体执行的命令可能不一样。复制字体应该都一样，然
后可能需要将这个目录加入到 “/etc/X11/XF86Config” 当中去，最后也有可能需要重启
动图形系统。要灵活一点
.TP
配置latex 和 ps 系统
.
.TP
分区，重新安装系统
.
这里是实践部分。硬盘分区，常见的分区方法是一个主分区，一个扩展分区，然后在扩展
分区中可以划分很多很多逻辑分区。也有分区方法是划分两个主分区，例如IBM的系统还原
分区，还有dell也是这样。
为linux系统分区可以只分一个swap分区和一个 “/” 分区。swap分区大小三五百M就可以
了。而 “‘/’ 分区” 的说法只是为了方便，意思是将某个分区作为 “/” 目录来使用
。类似的，如果安装程序要划分 “‘/boot’ 分区”，那么也是将某个分区作为 “/boo
t” 目录来使用。
任何一个目录都可以单独划为一个分区，例如可以将 “/usr/local” 目录单独划为一个
分区，这样把数据放在里面，重装系统时不会被删除掉。
高级的lvm和lvm2 只在大硬盘上才有用
.SH "HISTORY 历史"
.IX Header "背景介绍"
版上讨论了很久是不是要提高技术性了。的确，大部分入门级问题在
从前的帖子中都有涉及，精华区中大概也有答案，重复地提问“将有价值
的论题淹没了”。
.PP
    要提高技术水平，就要找到更多的论题和提出更好的想法。但是，鲁
迅先生说得好，要有“天才的土壤”才行。所以，对于新手问题也不能封
杀。一种设想，是请几位熟练的使用者专人负责某一个方面的问题，用信
件联系，然后把有价值的讨论结果发上来。但是，这样效率不高。
.PP
    我想试行一下这样的做法，就是入门级问题以及解答就跟在这个帖子
后面，过一段时间就清理一下，总结到一篇文章中。请大家配合。暂时设
定精华区的第19个目录和第29个目录分别用作已解决/未解决问题的保存
之处。
.PP
    后续的第二篇帖子是一些快速解答，可以在firefox 的搜索栏中使用
“页面内搜索”功能来查找关心的内容。
.PP
    欢迎修改
.
.SH Copyright
Permission is granted to copy, distribute and/or modify this page 
under the terms of the GNU Free Documentation License, Version 1.2 or 
any later version published by the Free Software Foundation; with 
no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
.SH AUTHOR
最后一次修改者：bbbush<bbbush@lilybbs>@2004年2月11日
.PP
最初的格式是txt 没有排版，没有链接
.
